#ifndef _BASS_AUDIO_H_
#define _BASS_AUDIO_H_

#include "base_audio.h"
namespace audio
{
class	BassAudio : public Audio
{
public:
	static BassAudio&	Instance();

	virtual AudioFile		LoadSoundFromMemory(vfs::LoadedBlock& Data, bool Repeat = false);
	virtual AudioHandle		PlaySFX(AudioFile	ID , float AudioBias);
	virtual AudioHandle		PlayMusic(const std::string& Name, float AudioBias = 1.0f, bool Repeat = true);
	virtual AudioHandle		PlayMusicH(AudioFile, float AudioBias = 1.0f) ;
	virtual void			Init(const std::string& AudioSet);
	virtual void			Shutdown(); 
	virtual bool			IsPlaying(AudioHandle Handle);
	virtual void			StopSound(AudioHandle Handle);
	virtual void			StopMusic();
	virtual void			PauseAll();
	virtual void			RestartAll() ;
	virtual void			SetMusicVolume(int	Volume);

	virtual unsigned int	GetFileSize(AudioHandle	Handle);

protected:
							BassAudio() :Audio() {} ;
	virtual					~BassAudio(){};
};

} // namespace audio
#endif //_BASS_AUDIO_H_